Method and system for providing an extensible user interface

ABSTRACT

Displaying a custom user interface in response to a determination that the application program is configured to display the custom user interface. To create the custom user interface, the end user can customize one or more default user interface files to create custom user interface files. The default user interface files can comprise one or more of a structure definition file, a content definition file, and a content display file. Additionally, the custom user interface can be associated with a program module function that can execute in connection with displaying the custom user interface.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation application of U.S. Pat. No.7,366,991, issued Apr. 29, 2008, and entitled “METHOD AND SYSTEM FORPROVIDING AN EXTENSIBLE USER INTERFACE,” which is hereby incorporated inits entirety by reference.

FIELD OF THE INVENTION

The present invention relates to a user interface for a computer programmodule. Particularly, the present invention relates to an extensibleuser interface that can be modified by an end user.

BACKGROUND OF THE INVENTION

Conventional computer program modules, such as application programs,provide a default user interface for all end users of the product. Theprogram module comprises computer software code that generates the userinterface. However, an end user cannot modify the default user interfacewithout de compiling and rewriting the computer software code of theprogram module. Accordingly, conventional program modules provide a“take it or leave it” approach to presenting a user interface for theend user. If the end user finds the default user interface hard to useor lacking desired functionality, then the end user may search foranother program module with a more user-friendly default user interfaceand having the desired functionality. Alternatively, the end user maydevelop a custom program module having the desired user interface andfunctionality. End users also may develop standardized operations andformatting based upon the format of information provided by a programmodule having the desired functionality. Such an end user will resisttransitioning to a new program module providing improved functionalityif the new user interface does not provide information in the existingformat of their own business method.

To provide a more user-friendly default user interface, conventionalprogram modules can offer a configurable user interface in which the enduser can select preprogrammed features. Typically, the program moduleexecutes a set-up mode during installation by the end user. During theset-up mode, the end user can configure the default user interface byselecting predetermined options. The end user also can configure thedefault user interface at a subsequent time by selecting otherpredetermined options. The program module then displays the default userinterface configured by the end user and having the selected options.However, the end user can select from only the predetermined options.Then, that program module presents a “take it or leave it” approach toproviding a user interface having only options selected from anavailable set of predetermined display options. Thus, that prior type ofconfigurable user interface does not overcome the problems of theconventional user interface discussed above.

Accordingly, there is need in the art for a program module userinterface that can be customized by the end user. A need also exists fora user interface that the end user can customize without decompiling theprogram module's software code. Additionally, a need exists for a userinterface that the end user can customize to include desired content andfunctionality for the end user's particular business method. A need alsoexists for associating a program module file with a custom userinterface so that the program module displays the custom user interfaceupon opening the program module file. Furthermore, a need exists in theart for allowing an end user to switch between user interfaces withouthaving to restart the program module.

SUMMARY OF THE INVENTION

The present invention provides a program module user interface that canbe customized by an end user based upon modifications to a default userinterface. The end user can customize the user interface to includecontent and functionality desired by the end user without a need fordecompiling the program module's software code.

For one aspect of the present invention, a program module can comprise adefault structure definition file, a default content definition file,and one or more default content display files for generating a defaultuser interface. The end user can customize the user interface bymodifying one or more of the default structure definition file, thecontent definition file, and the content display files to create one ormore custom files. Then, the program module can use the custom files togenerate the custom user interface.

In operation, the structure definition file can specify a layout orpositioning for content items in the user interface. Typical contentitems include a goal bar, a side pane, a main viewing area, and otheritems displayed within the goal bar, side pane, and main viewing area.The structure definition file can reference a content itemidentification number for each content item. The program module cansearch the content definition file to find the content item associatedwith the respective identification number. The program module thendisplays the content item in the user interface in the positionspecified in the structure definition file.

Additionally, each content item can have an associated content displayfile comprising display content corresponding to the content item. Thecontent definition file can map the content item's identification numberto a location of the associated content display file. Accordingly, whenthe end user selects a content item in the user interface, the programmodule can read the structure definition file to obtain the contentidentification number for the selected content item. Next, the programmodule can search the content definition file to obtain the contentdisplay file location for the display content mapped to the contentitem. Then, the program module can load and display in the userinterface the display content from the mapped content display file.

To customize the user interface, the end user can modify one or more ofthe structure definition file, the content definition file, and thecontent display file that represent the default file(s) for the userinterface. For example, the end user can modify the position of contentitems by modifying the structure definition file. The end user can addor change content items by modifying the content definition file. Theend user can add or change display content for a content item bymodifying the corresponding content display file, or by adding a newcontent display file. To modify one of the default files, the end usercan modify the actual default file and save the modified file as acustom file. Alternatively, the end user can create a new custom filefor use in place of, or in addition to, the default file.

In another aspect of the present invention, the structure definitionfile and the display content files can comprise a hyper text markuplanguage (“HTML”) type file, and the content definition file cancomprise an extensible markup language (“XML”) type file.

These and other aspects, objects, and features of the present inventionwill become apparent from the following detailed description of theexemplary embodiments, read in conjunction with, and reference to, theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram depicting a conventional personal computersuitable for supporting the operation of embodiments of the presentinvention.

FIG. 2 is a display screen of a representative user interfaceconstructed according to an exemplary embodiment of the presentinvention.

FIG. 3 is a flow chart depicting a method for providing an extensibleuser interface according to an exemplary embodiment of the presentinvention.

FIG. 4 is a flow chart depicting a method for creating a default userinterface according to an exemplary embodiment of the present invention.

FIG. 5 is a flow chart depicting a method for defining default userinterface content according to an exemplary embodiment of the presentinvention.

FIG. 6 is a flow chart depicting a method for displaying a default userinterface according to an exemplary embodiment of the present invention.

FIG. 7 is a flow chart depicting a method for creating custom userinterface structure according to an exemplary embodiment of the presentinvention.

FIG. 8 is a flow chart depicting a method for creating custom userinterface content according to an exemplary embodiment of the presentinvention.

FIG. 9 is a flow chart depicting a method for displaying a custom userinterface according to an exemplary embodiment of the present invention.

FIG. 10 is a display screen of a representative dialogue constructedaccording to an exemplary embodiment of the present invention.

DETAILED DESCRIPTION OF THE EXEMPLARY EMBODIMENTS

The present invention can provide a program module user interface thatis customizable by an end user. The customized user interface canprovide desired content and functionality different from the content andfunctionality of a default user interface for the program module.Accordingly, an end user in a company or organization can customize theuser interface to provide custom steps within a program module'sprocesses, to outline their own unique processes, to add links toadditional information, and to present information in the format of theend user's business method. The end user can customize the userinterface by adding new content to the default user interface frameworkor by changing the user interface framework to implement newmethodologies and features not yet supported by the program module.

Exemplary embodiments of the present invention will be describedgenerally in the context of software modules running in a computingenvironment, The processes and operations performed by the softwaremodules include the manipulation of signals by a client or server andthe maintenance of those signals within data structures resident in oneor more of local or remote memory storage devices. Such data structuresimpose a physical organization upon the collection of data stored withina memory storage device and represent specific electrical or magneticelements. Those symbolic representations are the means used by thoseskilled in the art of computer programming and computer construction toeffectively convey teachings and discoveries to others skilled in theart.

The present invention also includes a computer program that embodies thefunctions described herein and illustrated in the appended flow charts.However, it should be apparent that there could be many different waysof implementing the invention in computer programming, and the inventionshould not be construed as limited to any one set of computer programinstructions. Further, a skilled programmer would be able to write sucha computer program to implement the disclosed invention based on theflow charts and associated description in the application text.Therefore, disclosure of a particular set of program code instructionsis not considered necessary for an adequate understanding of how to makeand use the invention. The inventive functionality of the claimedcomputer program will be explained in more detail in the followingdescription read in conjunction with the Figures illustrating theprogram flow.

Referring now to the drawings, in which like numerals represent likeelements, aspects of the present invention and exemplary operatingenvironment will be described.

FIG. 1 is a block diagram depicting a conventional personal computer 10suitable for supporting the operation of embodiments of the presentinvention. As shown in FIG. 1, the personal computer 10 operates in anetworked environment with logical connections to a remote server 11.The logical connections between the personal computer 10 and the remoteserver 11 are represented by a local area network 12 and a wide areanetwork 13. Those of ordinary skill in the art will recognize that inthis client/server configuration, the remote server 11 may function as afile server or computer server.

The personal computer 10 comprises a processing unit 14, such as“PENTIUM” microprocessors manufactured by Intel Corporation of SantaClara, Calif. The personal computer 10 also includes a system memory 15,comprising read only memory (ROM) 16 and random access memory (RAM) 17,which is connected to the processor 14 by a system bus 18. An exemplaryembodiment of the computer 10 utilizes a BIOS 19, which is stored in theROM 16. Those skilled in the art will recognize that the BIOS 19 is aset of basic routines that helps transfer information between elementswithin the personal computer 10. Those skilled in the art also willappreciate that the present invention may be implemented on computershaving other architectures, such as computers that do not use a BIOS,and those that utilize other microprocessors.

Within the personal computer 10, a local hard disk drive 20 is connectedto the system bus 18 via a hard disk drive interface 21. A floppy diskdrive 22, which reads or writes a floppy disk 23, is connected to thesystem bus 18 via a floppy disk drive interface 24. A CD-ROM and/or DVDdrive 25, which reads a CD-ROM or DVD 26, is connected to the system bus18 via a CD-ROM/DVD interface 27. A user enters commands and informationinto the personal computer 10 by using input devices, such as a keyboard28 and/or a pointing device, such as a mouse 29, which are connected tothe system bus 18 via a serial port interface 30. Other types ofpointing devices (not shown in FIG. 1) include track pads, track balls,pens, head trackers, data gloves, and other devices suitable forpositioning a cursor on a computer monitor 31. The monitor 31 or otherkind of display device is connected to the system bus 18 via a videoadapter 32.

The remote server 11 in the networked environment is connected to aremote memory storage device 33. The remote memory storage device 33 istypically a large capacity device such as a hard disk drive, CD-ROM orDVD drive, magneto-optical drive or the like. Those skilled in the artwill understand that program modules, such as application programmodules 37C and 37D, are provided to the remote server 11 viacomputer-readable media. The personal computer 10 is connected to theremote server 11 by a network interface 34, which is used to communicateover the local area network 12.

In an alternative embodiment, the personal computer 10 is connected tothe remote server 11 by a modem 35, which is used to communicate overthe wide area network 13, such as the Internet. The modem 35 isconnected to the system bus 18 via the serial port interface 30. Themodem 35 also can be connected to the public switched telephone network(PSTN) or community antenna television (CATV) network. Althoughillustrated in FIG. I as external to the personal computer 10, those ofordinary skill in the art can recognize that the modem 35 also may beinternal to the personal computer 10, thus communicating directly viathe system bus 18. Connection to remote server 11 via both the localarea network 12 and the wide area network 13 is not required, but merelyillustrates alternative methods of providing a communication pathbetween the personal computer 10 and the remote server 11.

Although other internal components of the personal computer 10 are notshown. Those of ordinary skill in the art will appreciate that suchcomponents and the interconnection between them are well known.Accordingly, additional details concerning the internal construction ofthe personal computer 10 need not be disclosed in connection with thepresent invention.

Those skilled in the art will understand that program modules, such asan operating system 36, a representative application program module 37A,a web browser application program module 37B, other program modules 37N,and data are provided to the personal computer 10 via computer-readablemedia. The program modules 37N can comprise application programs orother program types that can provide a customizable user interface onthe monitor 31 according to an exemplary embodiment of the presentinvention. In an exemplary computer 10, the computer-readable mediainclude the local or remote memory storage devices, which may includethe local hard disk drive 20, floppy disk 23, CD-ROM or DVD 26, RAM 17,ROM 16, and the remote memory storage device 33. In another exemplarypersonal computer 10, the local hard disk drive 20 is used to store dataand programs, including user interface default files, such as astructure definition file, a content definition file, and a contentdisplay file.

Those skilled in the art will appreciate that the present invention maybe implemented in other computer system configurations, includinghand-held devices, multiprocessor systems, microprocessor based orprogrammable consumer electronics, network personal computers,minicomputers, mainframe computers, and the like. The invention may alsobe practiced in distributed computing environments, where tasks areperformed by remote processing devices that are linked through acommunications network. In a distributed computing environment, programmodules may be located in both local and remote memory storage devices.

FIG. 2 is a display screen of a representative user interface 200constructed according to an exemplary embodiment of the presentinvention. Referring now to FIG. 1 and FIG. 2, the exemplary userinterface 200 comprises a goal bar 202, a side pane 204, and a mainviewing area 206. The goal bar 202 comprises goal area controls 202a-202 d, which allow the end user to navigate to the main functionalareas of the program module 37N. Selecting a goal area 202 a-202 d canchange the display content of a side pane 204 to comprise a list ofactivities for completing the selected goal area. The goal bar 202 alsocan comprise a menu control 202 e, which can provide a drop down menu ofitems related to the information currently displayed in the side pane.

Selecting an activity from the list of activities in the side pane 204can change the display content of the side pane 204 to show informationfor performing the selected activity. In an exemplary embodiment, theside pane 204 can comprise content other than a list of activities. Forexample, the side pane 204 can comprise any of the following: (1)controls such as radio buttons, push buttons, text entry boxes, dropdownlists, or other controls to interact with the program module 37N and itsdata via a script or macro; (2) textual information such as domainknowledge, help information, or other text; (3) pop-up definitions andtool tips to explain terminology; (4) a link to a help topic, and (5) acontrol associated with computer software code for executing anapplication program interface (“API”).

The main viewing area 206 comprises views of the program module 37N inwhich the end user views, edits, and performs work. For example, themain viewing area 206 can change to correspond to a selected goal areacontrol 202 a-202 d or a selected activity from the side pane 204. In anexemplary embodiment, the main viewing area 206 can comprise a viewdisplaying an ActiveX® control associated with functionality of theprogram module 37N. Alternatively, the main viewing area 206 cancomprise a web browser based view, or a combination of the web browserbased view and the ActiveX® control.

The exemplary embodiment illustrated in FIG. 2 comprises a userinterface for a project management-type program module, such as the“PROJECT” program distributed by Microsoft Corporation of Redmond, Wash.In that exemplary embodiment, the goal area controls 202 a-202 d cancomprise “Tasks.” “Resources,” “Track,” and “Analyze and Report,”respectively. Those goal areas can represent the major projectmanagement phases of planning tasks, managing resources, tracking theproject once it is underway, and reporting and analyzing project data.As shown in FIG. 2, the end user has selected the “Tasks” goal areacontrol 202 a, causing the program module 37N to display a correspondinglist of task-related activities in the side pane 204 that should becompleted to plan the tasks in a project. For example, representativeactivities for a project management environment comprise defining theproject, creating a task, and scheduling each task. The main viewingarea 206 displays a work area for the end user to create and editproject tasks.

The description provided below for FIGS. 3-9 references therepresentative user interface of FIG. 2 to illustrate exemplary featuresof a user interface according to exemplary embodiments of the presentinvention.

FIG. 3 is a flow chart depicting a method 300 for providing anextensible user interface according to an exemplary embodiment of thepresent invention. Turning to FIGS. 1, 2 and 3, in step 305, a computersoftware programmer creates a default user interface for the programmodule 37N. For example, the programmer can create the default userinterface during the original development of the computer software codefor the program module, thereby resulting in the delivery to an end userof a program module having the default user interface. Thus, the defaultuser interface comprises the user interface provided by the manufacturerof the program module 37N. Additionally, the default user interface cancomprise default error pages for use if a custom user interface performsa task not recognized by the program module 37N. The program module 37Nthen comprises the default user interface when installed in the personalcomputer 10 of an end user. The end user typically comprises a businessor an individual consumer. In step 310, the end user chooses whether tocustomize the user interface of the program module 37N. If not, then themethod branches to step 315, in which the program module 37N displaysthe default user interface.

If the end user decides in step 310 to customize the program module'suser interface by modifying the default file of the program module, thenthe method branches to step 317. In step 317, the end user configuresthe program module 37N to reference and display a custom user interface,rather than the default user interface. For example, the program module37N can comprise an options screen in which the user can select a “usecustom interface” control. Additionally, the options screen can comprisean entry field in which the user can input the location of the customfiles supporting the custom user interface.

In an exemplary embodiment, the options screen can comprise a userinterface dialogue that can allow the end user to select the defaultuser interface or a custom user interface. FIG. 10 is a display screenof a representative dialogue 1000 constructed according to an exemplaryembodiment of the present invention. As shown, the end user can selectfrom dialogue elements 1002 and 1004 of dialogue 1000 to customize theuser interface structure and/or content. The end user can selectdialogue element 1002 a to use the default user interface structure ordialogue element 1002 b to use custom user interface structure.Additionally, the end user can select dialogue element 1004 a to use thedefault user interface content or dialogue element 1002 b to use customuser interface content. In an exemplary embodiment, the dialogue 1000can comprise a text box (not shown) in which the end user can specify alocation of custom structure or content files for use by the programmodule 37N to implement the custom user interface structure or content.

The dialogue 1000 can allow an end user to switch between userinterfaces without restarting the program module 37N. In operation, theprogram module 37N can load the desired interface after the user selectsthe “OK” control 1006 from the dialogue 1000. Additionally, the dialogue1000 can be associated with an individual program module file.Accordingly, the program module 37N can load the appropriate default orcustom user interface associated with the program module file whenopening that program module file.

The method 300 then proceeds to step 320. In step 320, the end userdetermines whether to customize the user interface structure. The userinterface structure can comprise the general makeup of the userinterface 200 (FIG. 2). For example, as shown in FIG. 2, the userinterface structure can comprise a frame set indicating the position ofthe side pane 204 and the position of the main viewing area 206. Thegoal bar 202 can be generated as a tool bar of the program module 37N.However, the present invention is not limited to that user interfacestructure. For example, the user interface structure can comprisepositioning and layout information for different types of userinterfaces. In an exemplary embodiment, the user interface structure cancomprise arbitrary HTML code. The user interface structure also cancomprise a reference to an identification number of content items fordisplay in the user interface 200. For example, the content items cancomprise goal area controls 202 a-202 d of the goal bar 202, as well ascontent items for display in the side pane 204.

If the end user determines in step 320 to customize the user interfacestructure, then the method branches to step 325. In step 325, the enduser creates the custom user interface structure for the user interfaceof the program module 37N. For example, the end user can modify thepositions of the side pane 204 and main viewing area 206. Additionallyor alternatively, the end user can modify or add content item referencesto change the specified content for display in the user interface. Aftercreating the custom user interface structure, the method branches tostep 330. If the end user decides in step 320 not to customize the userinterface structure, then the method branches directly to step 330.

In step 330, the end user determines whether to customize the userinterface content of the program module 37N. The user interface contentcan comprise the content items displayed in the user interface 200 inthe positions specified by the user interface structure. For example,the user interface content can comprise the names of the goal areacontrols 202 a-202 d on the goal bar 202. Additionally, the content cancomprise the content associated with a particular content item anddisplayed in the side pane 204.

If the end user decides in step 330 to customize the content of the userinterface, then the method branches to step 335. In step 335, the enduser creates custom user interface content. For example, the end usercan modify the content items referenced by the user interface structure,thereby modifying the content displayed in the user interface.Additionally or alternatively, the end user can modify additionalcontent associated with the content item, thereby customizing thecontent displayed when a user selects the content item. The end useralso can add content to the custom user interface.

The method 300 then proceeds to step 340 in which the program module 37Ndisplays the custom user interface. If the end user decides in step 330not to customize the user interface content, then the method branchesdirectly to step 340. The displayed custom user interface comprises thecustom user interface structure and/or the custom user interface contentcreated in steps 325 and 335, respectively.

FIG. 4 is a flow chart depicting a method 400 for creating a defaultuser interface according to an exemplary embodiment of the presentinvention, as referred to in step 305 of FIG. 3. Turning now to FIGS. 1,2 and 4, in step 405, the computer software programmer defines a defaultuser interface structure, typically during the software code developmentphase for the associated program module. In an exemplary embodiment, theprogrammer can define the default structure in a default structuredefinition file. The default user interface structure can comprise thestructure discussed above. For example, as shown in FIG. 2, the userinterface structure can comprise a frame set indicating respectivepositions of the side pane 204 and the main viewing area 206. The userinterface structure also can identify content items for display in theuser interface 200. For example, the content items can comprise itemsdisplayed in the goal area controls 202 a-202 d of the goal bar 202.

In step 410, the computer software programmer defines default userinterface content for display in the user interface. In an exemplaryembodiment, the content can comprise the content items displayed in theuser interface in the positions specified by the user interfacestructure. For example, the user interface content can comprise thenames of the goal area controls 202 a-202 d on the goal bar 202 for therepresentative user interface illustrated in FIG. 2. The content alsocan comprise the content associated with a particular content item anddisplayed in the side pane 204. In an exemplary embodiment, theprogrammer can define content items in a default content definitionfile. Additionally, the programmer can define display content associatedwith respective content items in one or more content display files. Thedisplay content can be displayed in the side pane 204 upon selection ofthe content item by the end user.

The method 400 then proceeds to step 415. In step 415, the computersoftware programmer maps the defined default content to the defineddefault structure. In an exemplary embodiment, the mapping step involvesproviding an identification number for each content item in the defaultcontent definition file. Then, the programmer inserts a reference to thecontent item identification number in the desired position of thestructure definition file. Accordingly, the default structure definitionfile can indicate the position to display a desired content item byreferencing the content item's identification number. The method thenproceeds to step 310 (FIG. 3).

FIG. 5 is a flow chart depicting a method 500 for defining default userinterface content according to an exemplary embodiment of the presentinvention, as referred to in step 410 of FIG. 4. With reference to FIGS.1, 2 and 5, in step 505, the computer software programmer defines adefault content item name and identification number. As best shown bythe example in FIG. 2, the computer software programmer can define acontent item name “tasks” for the goal bar area 202 a and can assign anidentification number “10” to that content item. In step 510, thecomputer software programmer defines a default content item descriptionfor the content item. For example, the programmer can describe the“tasks” content item as “a list of all task-related items for developinga project.”

In step 515, the programmer can define related views for the defaultcontent item. In that regard, the programmer can define a view type ofthe main viewing area 206 for which the content item is relevant. Inoperation, the program module 37N can cross-check the view typedisplayed in the main viewing area 206 and can display content for arelated view type in the side pane 204. For example, in the exemplaryuser interface illustrated in FIG. 2 for a project management-typeprogram module, the view types can comprise a task-type view and aresources-type view. The “tasks” content item with identification number“10” can have a defined task-type view content. As shown in FIG. 2, theend user has selected the “tasks” goal area control 202 a, leading tothe display of the corresponding task list content in the side page 204.The program module 37N also displays in the main viewing area 206 anappropriate task-type view having functional content for developing atask. If the end user subsequently selects a main view having aresource-type view, the program module 37N can determine that thecurrent task-type view content in the side pane 204 is not proper for aresource-type view in the main viewing area 206. Accordingly, theprogram module 37N can replace the task-type view content in the sidepane 204 with a relevant resource-type view content.

In step 520, the computer software programmer defines related activitiesfor the default content item. The related activities can indicaterelated content items to display in the “next steps and relatedactivities” menu control 202 e of the goal bar 202. For example, for acontent item of “create a task list” shown in the side pane 204, relatedactivities can comprise “create a recurring task” or “import task listfrom another application.” Accordingly, relating those content items tothe create a task list content item indicates that the menu control 202e should display those items when displaying the “create a task list”content item in the side pane 204.

In step 525, the programmer creates help text for the default contentitem. For example, the programmer can create a content display filecomprising the help text. Then, the programmer can define the help textcontent display file location in the content definition file and canrelate that link to the content item. Accordingly, the program module37N can display the help text link while displaying the related contentitem.

In step 535, the programmer writes the items defined in steps 505-525for the content item into the default content definition file.

Then, in step 540, the programmer defines display content correspondingto the default content item. As shown in FIG. 2, the display content cancomprise the content displayed in the side pane 204 when the end userselects the content item.

In step 542, the programmer can assign functionality from the programmodule 37N to the default content item. In that regard, the programmercan create a script or macro that executes in connection with loading ofthe default content item. The script can call any functionality of theprogram module 37N. In an exemplary embodiment, a script or macro cancall an application program interface of the program module 37N. Forexample, the “create a task list” content item can include a script thatcalls the “create a task list” function of a project application anddisplays the “create a task list” screen in the main viewing area 206 ofthe user interface 200.

In step 545, the programmer saves the display content and applicationfunction in a default content display file. In step 550, the programmerreads the location of the default content display file, which comprisesthe file path of the default content display file. Then, in step 555,the programmer writes the default content display file location in thedefault content definition file and maps the location to the contentitem identification number.

In an exemplary embodiment of steps 540-555, for the “tasks” contentitem in the goal area control 202 a of the user interface 200 of FIG. 2,the programmer can define the display content for the side pane 204corresponding to the “tasks” content item. The programmer can save thedisplay content in a content display file and can associate the contentdisplay file location with the content item in the default contentdefinition file. In operation, if the end user selects the goal areacontrol 202 a for the “tasks” content item, the program module 37N candisplay the corresponding display content from the content display filein the side pane 204. Selection of the content item can trigger a searchfor the content item's identification number in the default contentdefinition file. Then, after finding the content item's identificationnumber in the default content definition file, the program module 37Ncan link to the associated content display file location and can loadand display the side pane content from the default content display file.

The method then proceeds to step 160. In step 560, the programmerdetermines whether to create another default content item. In thatregard, the computer software programmer can create another defaultcontent item for each content item of the user interface 200 in FIG. 2.For example, the programmer can create a content item for each goal areacontrol 202 a-202 d of the goal bar 202, as well as each item listed inthe corresponding side pane 204 for each of the content items 202 a-202e. The programmer also can create the corresponding display content foreach content item. The display content can comprise the additionalcontent items displayed in the side pane 204 upon selection of thecorresponding content item from either the goal bar 202 or the side pane204. Accordingly, the method branches back to step 505 to repeat theprocess for each content item. After the programmer has created alldefault content items, then the method proceeds to step 415 (FIG. 4).

FIG. 6 is a flow chart depicting a method 600 for displaying a defaultuser interface according to an exemplary embodiment of the presentinvention, as referred to in step 315 of FIG. 3. Referring to FIGS. 1, 2and 6, in step 605, the application program 37N reads the user interfacestructure from the default structure definition file. In an exemplaryembodiment, the default structure definition file is implemented by amain hyper text markup language (“HTML”) type file defining thepositions of the side pane 204 and the main viewing area 206 for theuser interface illustrated in FIG. 2. Additionally, the main HTML typefile can reference the identification number of content items displayedin the goal bar 202, the side pane 204, and the main viewing area 206.Accordingly, in step 605, the program module 37N can read the positionthe side pane 204 and the main viewing area 206 and the identificationnumber of content items to be displayed in those frames, as well as theidentification number of content items to be displayed in the goal bar202.

Then, in step 610, the program module 37N can display content from thedefault content definition file as specified in the default structuredefinition file. In that regard, the program module 37N can search thedefault content definition file for the identification number of eachcontent item referenced in the default structure definition file. Theprogram module 37N then can display the content item associated with theidentification number in the position specified by the default structuredefinition file.

In an exemplary embodiment, the default content definition file isimplemented by an extensible markup language (“XML”) type file. In aspecific exemplary embodiment, the main HTML type file can comprise aposition referencing identification number “10,” indicating the contentitem for display in the goal area 202 a of the goal bar 202, as shown inFIG. 2. The XML content definition file can indicate that theidentification number “10” corresponds to the content item “tasks.”Accordingly, the program module 37N can display the content item “tasks”in the goal area 202 a of the goal bar 202, as specified in the mainHTML type file.

In step 615, the program module 37N reads the location of a contentdisplay file comprising additional content corresponding to the contentitem. The additional content for display can comprise the contentdisplayed in the side pane 204. In an exemplary embodiment, the programmodule 37N can read the location of the content for the side pane 204from the default content definition file.

Then, in step 620, the program module 37N loads the additional contentfrom the content display file and displays that content as specified inthe default structure definition file. In an exemplary embodiment, thecontent display file is implemented by an HTML type file. Accordingly,the program module 37N can display the HTML content in the side pane 204for the user interface 200 shown in FIG. 2.

In step 622, the program module 37N can execute a script or macroassociated with the default content to initiate functionality assignedto the default content. For example, the script assigned to the “Tasks”content shown in the side pane 204 can comprise steps accessingfunctionality of the program module 37N to display in the main viewingarea 206 the appropriate view for the “Tasks” content.

The method 600 then proceeds to step 625 in which the program module 37Ndetermines whether the end user has selected a content item in the userinterface 200 to change the user interface display. For example, the enduser can select any one of the content items in goal area controls 202a-202 d of the goal bar 202. Alternatively, the end user can select anyof the content items in the side pane 204. The program module 37Nrepeats step 625 until the user selects one of the content items.

When user selects one of the content items, the method 600 branches tostep 630. In step 630, the program module 37N reads the location of thecontent display file corresponding to the selected content item. In anexemplary embodiment, the program module 37N can determine theidentification number of the selected content item referenced in thedefault structure definition file. Then, the program module 37N cansearch the default content definition file for the identification numberof the content item. After finding the content item's identificationnumber in the default content definition file, the program module 37Nthen links to the corresponding content display file comprising thedisplay content for the selected content item.

In step 635, the program module 37N loads and displays the content fromthe content display file corresponding to the selected content item, asspecified in the default structure definition file. For example, if theuser selects the “create a task list” content item from the side pane204, then the program module 37N can change the side pane 204 to displaythe content corresponding to the selected content item. In that regard,the side pane 204 can display an HTML type file comprising the steps forcreating a task list, which is the display content associated with the“create a task list” content item.

In step 637, the program module 37N can execute a script or macroassociated with the content item to initiate functionality assigned tothe content item. For example, the script assigned to the “create a tasklist” content item shown in the side pane 204 can comprise stepsaccessing functionality of the program module 37N to display in the mainviewing area 206 the appropriate view for creating a task list.

The method then proceeds to step 640. In step 640, the program module37N enters a return loop back to step 625 to wait for the end user toselect another content item to change the user interface display. Whenthe end user exits the program module 37N, then the method branches outof step 640 and ends.

In an exemplary embodiment, the program module 37N typically comprises aprogram module, such as a web browser, which can display the HTMLcontent described above in the user interface 200 of FIG. 2.

FIG. 7 is a flow chart depicting a method 700 for creating custom userinterface structure according to an exemplary embodiment of the presentinvention, as referred to in step 325 of FIG. 3. As shown in FIGS. 1, 2and 7, in step 705, the end user defines custom user interface structurein a custom structure definition file. In an exemplary embodiment, theend user can modify the default structure definition file and can savethe modified file as a custom structure definition file. For example,the end user can change the default HTML structure definition file toplace the side pane 204 on the right side of the main viewing area 206.In an alternative exemplary embodiment, the end user can create anentirely new structure definition file and can save that file as thecustom structure definition file.

Then, in step 710, the end user maps the user interface to the customstructure definition file. In an exemplary embodiment, the end user canconfigure the program module 37N to reference the location of the customstructure definition file, rather than the default structure definitionfile. The method 700 then proceeds to step 330 (FIG. 3).

FIG. 8 is a flow chart depicting a method 800 for creating custom userinterface content according to an exemplary embodiment of the presentinvention, as referred to in step 335 of FIG. 3. In an exemplaryembodiment, the end user can create custom content by modifying defaultcontent files of the program module 37N. For example, the end user canmodify default content files by modifying the default content definitionfile and/or a referenced default content display file and can save themodified file as a custom content file. As another example, the end usercan modify default content files by creating a new custom contentdefinition file or a new custom content display file to replace orsupplement the default content files.

If the end user creates a custom content definition file, then the enduser can modify the default or custom structure definition file toreference the custom content definition file. Additionally oralternatively, if the end user creates a custom content display file,then the end user can modify the default or custom content definitionfile to reference the new custom content display file.

FIG. 8 illustrates a method for creating custom content and applies tocreating a complete custom content definition file or custom contentdisplay file, or to modifying the default content definition file or acustom content display file to include new or modified content items. Inthat regard, the method illustrated in FIG. 8, in which an end usercreates custom content, comprises steps similar to those illustrated inFIG. 5, in which the programmer created the user interface content.

Referring to FIGS. 1, 2 and 8, in step 805, the end user defines acustom content item name and identification number. For example, to adda custom content item to the task activity list illustrated in the sidepane 204 of FIG. 2, the end user can define a custom content item namesuch as “my tasks” for the side pane 204 and can assign anidentification number “20” to that content item. In step 810, the enduser defines a custom content item description for the custom contentitem. For example, the end user can describe the “my tasks” customcontent item as “a list of all task-related items for developing mypersonal project.”

In step 815, the end user can define related views for the customcontent item. For example, the end user can define a view type of themain viewing area 206 for which the custom content item is relevant. Inoperation, the program module 37N can cross check the view type contentdisplayed in the main viewing area 206 and can display a related viewtype content in the side pane 204, as discussed above with reference toFIG. 5. For example, the user can define the custom content item “mytasks” to have a task-type view content.

In step 820, the end user defines related activities for the customcontent item. The related activities can indicate related content itemsto display in the “next steps and related activities” control 202 e ofthe goal bar 202, as discussed above with reference to FIG. 5. In step825, the end user can create help text for the custom content item. Forexample, the end user can create a content display file containing thehelp text. Then, the end user can define the help text content displayfile location in the content definition file and can relate that link tothe custom content item. Accordingly, the program module 37N can displaythe help text link while displaying the related custom content item.

In step 835, the end user writes the items defined in steps 805-825 forthe custom content item into the custom content definition file. Then,in step 840, the end user defines display content corresponding to thecustom content item. The display content can comprise the contentdisplayed in the side pane 204 upon selection of the custom content itemby the end user.

In step 842, the end user can assign functionality from the programmodule 37N to the custom content item. In an exemplary embodiment, theend user can create a script or macro that executes in connection withloading of the custom content item. The script or macro can call anyfunctionality of the program module 37N. For example, the “my tasks”custom content item can include a script that calls the create task listfunction of a project application and displays the create task listscreen in the main viewing area 206 of the user interface 200.

In step 845, the end user saves the display content and applicationfunction in a custom content display file. In step 850, the end userreads the location of the custom content display file, which comprisesthe file path of the custom content display file. Then, in step 855, theend user writes the custom content display file location in the customcontent definition file and maps the location to the content itemidentification number.

In an exemplary embodiment of the steps 840-855, for the “my tasks”custom content item being added to the side pane 204, the end user candefine the display content for the side pane 204 corresponding to the“my tasks” content item. The end user can save the display content in acontent display file and can associate the content display file locationwith the content item in the custom content definition file. Inoperation, if the end user selects the “my tasks” content item from theside pane 204, the program module 37N can change the side pane displayto the corresponding display content from the content display file.Selection of the custom content item can trigger a search for the customcontent item's identification number in the custom content definitionfile. Then, after finding the content item's identification number inthe custom content definition file, the program module 37N can link tothe associated content display file location and can load and displaythe side pane content from the custom content display file.

The method 800 of FIG. 8 then proceeds to step 860. In step 860, the enduser determines whether to create another custom content item. In thatregard, the end user can create another custom content item for eachcontent item of the user interface 200 shown in FIG. 2. For example, theend user can create a content item for each goal area control 202 a-202d of the goal bar 202, as well as each item listed in the correspondingside pane 204 for each of the content items 202 a-202 e. The end useralso can add custom content items not included in the default userinterface. The end user can assign custom functionality of the programmodule to a custom content item. Additionally, the end user can createthe corresponding display content for each custom content item.Accordingly, the method 800 branches back to step 805 to repeat theprocess for each custom content item. After the end user has created allcustom content items, the method 800 proceeds to step 340 (FIG. 3).

In an exemplary embodiment, the custom structure definition file and anycustom content display files comprise an HTML file type, and the customcontent definition file comprises an XML file type, as discussed abovewith reference to the default user interface. The end user can modify,add, or create HTML and XML files without decompiling the computersoftware code of the program module.

FIG. 9 is a flow chart illustrating a method 900 for displaying a customuser interface according to an exemplary embodiment of the presentinvention, as referred to in step 340 of FIG. 3. With reference to FIGS.1, 2 and 9, in step 905, the program module 37N determines whether touse custom user interface structure. The program module 37N can makethat determination by reading the file location of the configuredstructure definition file. If the structure file location comprises thedefault structure definition file, then the method branches to step 910.In step 910, the program module 37N reads the user interface structurefrom the default structure definition file. The method then proceeds tostep 920. If the structure file location comprises a file location for acustom structure definition file, then the method branches from step 905to step 915. In step 915, the program module 37N reads the userinterface structure from the custom structure definition file. Themethod 900 then proceeds to step 920.

In step 920, the program module 37N determines whether to display customuser interface content in the user interface. If not, then the methodbranches to step 925 to display default user interface content. In step925, the program module 37N displays content from the default contentdefinition file as specified in the structure definition file. Thestructure definition file can comprise either the default or the customstructure definition file, as determined above in step 905. In anexemplary embodiment, the program module 37N can search the defaultcontent definition file for the identification number of each contentitem referenced in the structure definition file. The program module 37Nthen can display the content item associated with the identificationnumber in the position specified by the structure definition file.

In step 930, the program module 37N reads the location of a contentdisplay file comprising additional content corresponding to a contentitem. The additional content for display can comprise the contentdisplayed in the side pane 204. In an exemplary embodiment, the programmodule 37N can read the location of the content for the side pane 204from the default content definition file.

In step 935, the program module 37N loads the additional content fromthe content display file and displays that content as specified in thestructure definition file. In an exemplary embodiment, the contentdisplay file comprises an HTML type file. Accordingly, the programmodule 37N can display the HTML content in the side pane 204.

In step 937, the program module 37N can execute a script or macroassociated with the default content to initiate functionality assignedto the default content. For example, the script assigned to the “Tasks”content shown in the side pane 204 can comprise steps accessingfunctionality of the program module 37N to display in the main viewingarea 206 the appropriate view for the “Tasks” content.

The method 900 then proceeds to step 940 in which the program module 37Ndetermines whether the end user has selected a content item in the userinterface 200 to change the user interface display. For example, the enduser can select any one of the content items in goal area controls 202a-202 d of the goal bar 202. Alternatively, the end user can select anyof the content items listed in the side pane 204. The program module 37Nrepeats step 940 until the end user selects one of the content items.

When the end user selects one of the content items, the method 900branches to step 945. In step 945, the program module 37N reads thelocation of the content display file corresponding to the selectedcontent item. In an exemplary embodiment, the program module 37N candetermine the identification number of the selected content itemreferenced in the structure definition file. Then, the program module37N can search the default content definition file for theidentification number of the content item. After finding the contentitem's identification number in the default content definition file, theprogram module 37N can link to the corresponding content display filecomprising the display content for the selected content item.

In step 950, the program module 37N loads and displays the displaycontent from the content display file corresponding to the selectedcontent item, as specified in the structure definition file. Forexample, if the user selects the “create a task list” content item fromthe side pane 204, then the program module 37N can change the side pane204 to display the content corresponding to the selected content item.In an exemplary embodiment, the display content associated with the“create a task list” content item comprises an HTML-type file includinginstructions for creating a task list, which the program module can loadand display in the side pane 204.

In step 953, the program module 37N can execute a script or macroassociated with the content item to initiate functionality assigned tothe content item. For example, the script assigned to the “create a tasklist” content item shown in the side pane 204 can comprise stepsaccessing functionality of the program module 37N to display in the mainviewing area 206 the appropriate view for creating a task list.

The method 900 then proceeds to step 955. In step 955, the programmodule 37N enters a return loop back to step 940 to wait for the enduser to select another content item to change the user interfacedisplay. When the end user exits the program module 37N, the method 900branches out of step 955 and ends.

Referring back to step 920, if the program module 37N in FIG. 1determines that the user interface comprises custom content, then themethod branches to step 960. In step 960, the program module 37N candisplay content from the custom content definition file as specified inthe structure definition file. The structure definition file cancomprise either the default or the custom structure definition file, asdetermined above in step 905. In an exemplary embodiment, the programmodule 37N can search the custom content definition file for theidentification number of each content item referenced in the structuredefinition file. The program module 37N then can display the contentitem associated with the identification number in the position specifiedby the structure definition file.

In step 965, the program module 37N reads the location of a contentdisplay file comprising additional content corresponding to a contentitem. The additional display content can comprise the content displayedin the side pane 204. In an exemplary embodiment, the program module 37Ncan read the location of the display content for the side pane 204 fromthe custom content definition file.

Then, in step 970, the program module 37N loads the additional contentfrom the content display file and displays that content as specified inthe structure definition file. In an exemplary embodiment, the contentdisplay file can comprise an HTML type file. Accordingly, the programmodule 37N can display the HTML content in the side pane 204.

In step 972, the program module 37N can execute a script or macroassociated with the custom content to initiate functionality assigned tothe custom content. For example, the script assigned to the “Tasks”content shown in the side pane 204 can comprise steps accessingfunctionality of the program module 37N to display in the main viewingarea 206 the appropriate view for the “Tasks” content.

The method then proceeds to step 975. In step 975, the program module37N determines whether the end user has selected a content item in theuser interface 200 to change the user interface display. In an exemplaryembodiment, the end user can select any one of the content items in goalarea controls 202 a-202 d of the goal bar 202. Alternatively, the enduser can select any of the content items listed in the side pane 204.The program module 37N repeats step 975 until the end user selects oneof the content items.

When the end user selects one of the content items, then the methodbranches to step 980. In step 980, the program module 37N reads thelocation of a content display file corresponding to the selected contentitem. In an exemplary embodiment, the program module 37N can determinethe identification number of the selected content item referenced in thestructure definition file. Then, the program module 37N can search thecustom content definition file for the identification number of thecontent item. After finding the content item's identification number inthe custom content definition file, the program module 37N can link tothe corresponding content display file comprising the display contentfor the selected content item.

Then, in step 985, the program module 37N loads and displays the contentfrom the content display file corresponding to the selected contentitem, as specified in the structure definition file. For example, if theuser selects the custom “my tasks” content item from the side pane, thenthe program module 37N can change the side pane 204 to display thecontent corresponding to the selected content item. In an exemplaryembodiment, the display content associated with the custom “my tasks”content item comprises an HTML-type file including options forinteracting with the “my tasks” content item, which the program modulecan load and display in the side pane 204.

The method 900 then proceeds to step 988. In step 988, the programmodule 37N can execute a script associated with the content item toinitiate functionality assigned to the content item. For example, thescript assigned to the custom “my tasks” content item displayed in theside pane can comprise steps accessing functionality of the programmodule 37N to display the appropriate task view in the main viewing area206.

Then, in step 990, the program module 37N enters a return loop back tostep 975 to wait for the end user to select another content item tochange the user interface display. When the user exits the programmodule 37N, then the method 900 branches out of step 990 and ends.

In an exemplary embodiment, if the custom user interface performs a tasknot recognized by the program module 37N, then the program module 37Ncan display an appropriate default error page.

As discussed above, the present invention can provide a user interfacecustomizable by an end user. The customized user interface can providedesired formatting, content, and functionality not present in thedefault user interface. The end user can customize any portion of thedefault user interface by changing or adding content items, displaycontent, and/or structure. Additionally, the end user can assign programmodule functionality to customized content.

The present invention can be used with computer hardware and softwarethat performs the methods and processing functions described above. Aswill be appreciated by those skilled in the art, the systems, methods,and procedures described herein can be embodied in a programmablecomputer, computer executable software, or digital circuitry. Thesoftware can be stored on computer readable media. For example, computerreadable media can include a floppy disk, RAM, ROM, hard disk, removablemedia, flash memory, memory stick, optical media, magneto-optical media,CD-ROM, etc. Digital circuitry can include integrated circuits, gatearrays, building block logic, field programmable gate arrays (FPGA),etc.

Although specific embodiments of the present invention have beendescribed above in detail, the description is merely for purposes ofillustration. Various modifications of, and equivalent stepscorresponding to, the disclosed aspects of the exemplary embodiments, inaddition to those described above, can be made by those skilled in theart without departing from the spirit and scope of the present inventiondefined in the following claims, the scope of which is to be accordedthe broadest interpretation so as to encompass such modifications andequivalent structures.

1. A computer-implemented method for displaying a user interface,comprising the steps of: creating a custom user interface for a programmodule by modifying a default user interface for the program module, thedefault user interface including structure definition informationspecifying layout for content items, content display information foreach content item that specifies display content for the content item,and content definition information mapping content items to contentdisplay information for the content items, wherein the modifyingincludes modifying information of the default user interface; inresponse to start-up of the program module, determining whether theprogram module is configured to display the custom user interface ratherthan the default user interface; and displaying the custom userinterface in response to a determination that the program module isconfigured to display the custom user interface by: displaying contentitems in the layout specified by the structure definition information;and in response to selection of a displayed content item, identifyingfrom the content definition information the content display informationfor the selected content item; and displaying the display content asdefined by the identified content display information.
 2. The methodaccording to claim 1, wherein said step of modifying the default userinterface comprises creating a custom file defining at least a portionof the user interface based upon one or more modifications to thedefault user interface.
 3. The method according to claim 1, furthercomprising the steps of: associating the custom user interface with afunction of the program module; and executing the program modulefunction in connection with displaying the custom user interface.
 4. Themethod according to claim 1, wherein said default user interfacecomprises a default structure definition file defining user interfacestructure referencing a first content item, wherein said step ofcreating a custom user interface comprises modifying the defaultstructure definition file to create a custom structure definition filedefining custom user interface structure referencing a second contentitem, and wherein said step of displaying the custom user interfacecomprises displaying the second content item according to the customstructure definition file.
 5. The method according to claim 4, whereinthe first and second content items comprise different content items. 6.The method according to claim 4, wherein the default and customstructure definition files comprise an HTML-type file.
 7. The methodaccording to claim 4, wherein said default user interface furthercomprises a default content display file comprising display contentcorresponding to the first content item, wherein said step of creating acustom user interface further comprises modifying the default contentdisplay file to create a custom content display file comprising customdisplay content corresponding to the second content item, and whereinsaid step of displaying the custom user interface further comprisesdisplaying the custom display content corresponding to the secondcontent item according to the custom structure definition file.
 8. Themethod according to claim 7, wherein the default and custom structuredefinition files and the default and custom content display filescomprise an HTML-type file.
 9. The method according to claim 1, whereinsaid default user interface comprises a default content definition filedefining a first content item, wherein said step of creating a customuser interface comprises modifying the default content definition fileto create a custom content definition file defining a second contentitem, and wherein said step of displaying the custom user interfacecomprises displaying the second content item defined in the customcontent definition file.
 10. The method according to claim 9, whereinthe first and second content items comprise different content items. 11.The method according to claim 9, wherein the default and custom contentdefinition files comprise an XML-type file.
 12. The method according toclaim 9, wherein said default user interface comprises a default contentdisplay file comprising display content corresponding to the firstcontent item, wherein said step of creating a custom user interfacefurther comprises modifying the default content display file to create acustom content display file comprising custom display contentcorresponding to the second content item, and wherein said step ofdisplaying the custom user interface further comprises displaying thecustom display content corresponding to the second content item.
 13. Themethod according to claim 12, wherein the default and custom contentdefinition files comprise an XML-type file, and wherein the defaultcontent display file and the custom content display file comprise anHTML-type file.
 14. The method according to claim 1, wherein saiddefault user interface comprises a structure definition file defininguser interface structure referencing one or more content items, acontent definition file defining the one or more content items, and acontent display file providing display content corresponding to at leastone of the one or more content items, wherein said step of creating acustom user interface comprises modifying one of the structuredefinition file, the content definition file, and the content displayfile, and wherein said step of displaying the custom user interfacecomprises displaying the user interface using the file modified in saidstep of creating a custom user interface.
 15. The method according toclaim 14, wherein said step of modifying one of the structure definitionfile, the content definition file, and the content display filecomprises modifying existing content in the modified file.
 16. Themethod according to claim 14, wherein said step of modifying one of thestructure definition file, the content definition file, and the contentdisplay file comprises adding new content to the modified file.
 17. Themethod according to claim 14, wherein the content definition filecomprises an XML-type file, and wherein the structure definition fileand the content display file comprise an HTML-type file.
 18. Acomputer-readable medium having computer-executable instructions forperforming the method of claim
 1. 19. A system for displaying a userinterface, comprising: a monitor that displays the user interface; and aprocessor executing a program module operable to present the userinterface for display on the monitor by performing the steps comprising:reading a structure definition file that references content items fordisplay in the user interface, the structure definition file specifyinglayout for the content items; reading a content definition file definingcontent items referenced in the structure definition file, the contentdefinition file specifying a content display file for each content item,each content display file specifying display content for a content item;and displaying the user interface comprising the content items on themonitor by: displaying content items in the layout specified by thestructure definition file; and in response to selection of a displayedcontent item, identifying from the content definition file the contentdisplay file for the selected content item; and displaying the displaycontent as defined by the identified content display file, wherein atleast one of the structure definition file, the content definition file,and a content display file comprise information modified by an end userof the program module.